#BDD #TDD #cucumber
套句好朋友 Dino Wang 的話:「透過BDD,覺得TDD變溫柔了」
這張圖是使用 cucumber 來進行 BDD 的完整示意圖,可以看到所有的程式碼都是從 user requirements 當出發點。
淺藍色的部分,則是使用自然語言(domain specific language)描述的 user story 與 scenarios。
→ 不管是誰都看得懂的表達方式,涵蓋了 why, who, what 。
左邊淡紅色的部分,則是 steps 的內容,也就是 scenario how 的部分,說明「如何使用 product 來完成 scenarios (所代表的需求)。所以,測試程式就只要把 steps 的肉填滿即可,執行測試程式的骨頭跟流程,都是在 cucumber gherkin style 的 scenarios 上。
→ 只需 focus 在 step 要填入什麼樣的測試程式,要理解 context 只需要看自然語言的 scenarios 即可。
有了可以執行的測試程式,還沒有 production code,自然就會得到 TDD 的第一個紅燈。也就是右下角的TDD區塊。接著只需要順其自然的依照 TDD 的三個步驟:紅燈、綠燈、重構,就可以完成使用者的需求。
→如果你的 TDD 在實務上顯得彆扭,沒頭沒尾,那就代表只有片段,還有前面的技巧需要補齊。
如此一氣呵成,從需求→scenearios(accetpance criteria)→測試程式→production code→自動產生文件,一點都沒浪費卻又一鼓作氣的完整,就是最美妙的地方。
--
若對這樣的開發方式有興趣想瞭解或學習的朋友,可以參考我在 skilltree 上的課程介紹,以及其他上過課學員的心得:http://skilltree.my/events/mbh